Mesh networking (topology) is a type of networking where each node must not only capture and disseminate its own data, but also serve as a relay for other nodes, that is, it must collaborate to propagate the data in the network. A mesh network can be designed using a flooding technique or a routing technique.
The flooding technique may be implemented via a flooding algorithm used in distributing data to every part of a connected network. Flooding algorithms are used in systems such as: Usenet, Peer-to-Peer file sharing systems, and those used in ad-hoc wireless networks. There are several variants of flooding algorithm, but most work as follows: each node acts as both a transmitter and a receiver; and each node tries to forward every message to every one of its neighbors except the source node. This results in every message eventually being delivered to all reachable parts of the network.
The routing technique may be implemented such that the data propagates along a path, by hopping from node to node until the destination is reached. There are two types of routing techniques: a link-state protocol and a distance-vector routing protocol. The link-state protocol is performed by every node in the network (i.e. nodes that are prepared to forward data). The basic concept of link-state routing is that every node constructs a map of the connectivity to the network, in the form of a graph, showing which nodes are connected to which other nodes. Each node then independently calculates the next best logical path from it to every possible destination in the network. The collection of best paths will then form the node's routing table. A distance-vector routing protocol requires that a router informs its neighbors of topology changes periodically and, in some cases, when a change is detected in the topology of a network. Compared to link-state protocols, which require a router to inform all the nodes in a network of topology changes, distance-vector routing protocols have less computational complexity and message overhead. Distance Vector means that nodes are advertised as vectors of distance and direction. “Direction” is represented by next hop address and exit interface, whereas “Distance” uses metrics such as hop count. Nodes using distance vector protocol do not have knowledge of the entire path to a destination.